package com.ruoyi.course.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.course.domain.ResourceAvailability;
import org.apache.ibatis.annotations.Param;

/**
 * 资源可用时间Mapper接口
 * 
 * @author chenxl
 * @date 2025-06-29
 */
public interface ResourceAvailabilityMapper 
{
    /**
     * 查询资源可用时间
     * 
     * @param id 资源可用时间主键
     * @return 资源可用时间
     */
    public ResourceAvailability selectResourceAvailabilityById(String id);

    /**
     * 查询资源可用时间列表
     * 
     * @param resourceAvailability 资源可用时间
     * @return 资源可用时间集合
     */
    public List<ResourceAvailability> selectResourceAvailabilityList(ResourceAvailability resourceAvailability);

    /**
     * 新增资源可用时间
     * 
     * @param resourceAvailability 资源可用时间
     * @return 结果
     */
    public int insertResourceAvailability(ResourceAvailability resourceAvailability);

    /**
     * 修改资源可用时间
     * 
     * @param resourceAvailability 资源可用时间
     * @return 结果
     */
    public int updateResourceAvailability(ResourceAvailability resourceAvailability);

    /**
     * 删除资源可用时间
     * 
     * @param id 资源可用时间主键
     * @return 结果
     */
    public int deleteResourceAvailabilityById(String id);

    /**
     * 批量删除资源可用时间
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteResourceAvailabilityByIds(String[] ids);

    /**
     * 根据资源ID和学年查询资源可用时间列表
     * @param resourceId 资源ID（非空）
     * @param academicYear 学年（非空）
     * @return 符合条件的资源可用时间列表
     */
    List<ResourceAvailability> selectByResourceIdAndAcademicYear(
            @Param("resourceId") String resourceId,
            @Param("academicYear") String academicYear
    );

    /**
     * 根据课程安排详情ID查询学生ID列表
     *
     * @param courseScheduleDetailsId 课程安排详情ID
     * @return 学生ID列表
     */
    public List<String> selectStudentIdsByCourseScheduleDetailsId(String courseScheduleDetailsId);

    /**
     * 批量插入资源可用时间记录
     *
     * @param list 资源可用时间列表
     * @return 插入数量
     */
    public int batchInsert(@Param("list") List<ResourceAvailability> list);
    //<!--传入courseScheduleDetailsId以及resource_type=1查询对应的记录-->
    List<ResourceAvailability> selectByResourceIdAndResourceType(
            @Param("courseScheduleDetailsId") String courseScheduleDetailsId,
            @Param("resourceType") int resourceType
    );

    //<--传入resource_id以及resource_type=1查询获取courseScheduleDetailsId列表-->
    List<String> selectCourseScheduleDetailsIdByResourceIdAndResourceType(
            @Param("resourceId") String resourceId,
            @Param("resourceType") int resourceType
    );

    /**
     * 根据资源ID查询对应的课程安排详情ID列表
     * @param resourceId 资源ID
     * @return 课程安排详情ID列表
     */
    List<String> selectCourseScheduleDetailsIdsByResourceId(String resourceId);

}
